home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 51 / Amiga Format CD51 (2000-03-10)(Future Publishing)(GB)[!][issue 2000-04].iso / -in_the_mag- / banging_the_metal / qdos / qdos4amiga3.lha / XCHPATCH_bas < prev    next >
Text File  |  1998-02-24  |  2KB  |  66 lines

  1. 100 REMark ------------------------------
  2. 110 REMark  XCHPATCH_bas - Mark J Swift
  3. 120 REMark  Fixes CACHE problems for
  4. 130 REMark  Xchange on 68040 and 68060
  5. 140 REMark ------------------------------
  6. 150 :
  7. 160 InFile$="Flp1_XCHANGE":OutFile$="Flp1_XCHANGE"
  8. 170 OPEN_IN#6;InFile$
  9. 180 fd=0:fl=FLEN(#6):ft=FTYP(#6):IF ft THEN fd=FDAT(#6)
  10. 190 CLOSE#6
  11. 200 IF fl=0 THEN 
  12. 210  PRINT\"File empty!"
  13. 220  IF InFlg%=0 THEN EXIT main_loop
  14. 230 ELSE 
  15. 240  IF fd=0 THEN 
  16. 250   PRINT\"Not an executable task!"
  17. 260  ELSE 
  18. 270   pl=84:ad=ALCHP(fl+pl):a=ad
  19. 280   LBYTES InFile$,a+pl
  20. 290   h=PEEK(a+pl+1)+2:IF h=0 THEN h=PEEK_W(a+pl+2)
  21. 300   IF (PEEK_W(a+pl+72+h+402)=HEX("4EBA")) AND (PEEK_W(a+pl+72+h+404)=-394-72) THEN 
  22. 310    PRINT\"Removing earlier patch"
  23. 320    FOR i=h-1 TO 0 STEP -1
  24. 330     POKE a+pl+72+i,PEEK(a+pl+i)
  25. 340    END FOR i
  26. 350    POKE_L a+pl+72+h+402,HEX("4EAD0438")
  27. 360    a=a+72:fl=fl-72
  28. 370   END IF 
  29. 380   FOR i=0 TO h-1
  30. 390    POKE a+i,PEEK(a+pl+i)
  31. 400   END FOR i
  32. 410   RESTORE 590
  33. 420   FOR i=0 TO pl-2 STEP 2
  34. 430    READ d$
  35. 440    POKE_W a+h+i,HEX(d$)
  36. 450   END FOR i
  37. 460   IF PEEK_L(a+pl+h+402)=HEX("4EAD0438") THEN 
  38. 470    POKE_W a+pl+h+402,HEX("4EBA"):POKE_W a+pl+h+404,-394-pl
  39. 480    DELETE OutFile$:SEXEC OutFile$,a,fl+pl,fd
  40. 490    PRINT\"TASK successfully patched"
  41. 500   ELSE 
  42. 510    PRINT\"Sorry, I don't recognise this task"
  43. 520   END IF 
  44. 530  RECHP ad
  45. 540  END IF 
  46. 550 END IF 
  47. 560 STOP
  48. 570 :
  49. 580 REMark m/c patches
  50. 590 DATA "7054","DDC0","99C0","9BC0"
  51. 600 DATA "604A","4E40","007C","0700"
  52. 610 DATA "6108","027C","D8FF","4EED"
  53. 620 DATA "0438","48E7","E080","7000"
  54. 630 DATA "4E41","0C28","0010","00A1"
  55. 640 DATA "6F24","4E7A","0002","0040"
  56. 650 DATA "0808","0C28","0030","00A1"
  57. 660 DATA "6310","4A40","6A04","F4B8"
  58. 670 DATA "F498","4A80","6A04","F478"
  59. 680 DATA "F458","4E7B","0002","4CDF"
  60. 690 DATA "0107","4E75"
  61. 700 :
  62. 710 DEFine PROCedure sav
  63. 720  DELETE flp1_XCHPATCH_bas
  64. 730  SAVE flp1_XCHPATCH_bas
  65. 740 END DEFine 
  66.